package cn.tangsihai.pet.service.impl;

import cn.tangsihai.basic.exception.MyException;
import cn.tangsihai.basic.service.impl.BasicServiceImpl;
import cn.tangsihai.basic.util.AjaxResult;
import cn.tangsihai.pet.domain.Pet;
import cn.tangsihai.pet.mapper.PetDetailMapper;
import cn.tangsihai.pet.mapper.PetMapper;
import cn.tangsihai.pet.service.IPetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class PetServiceImpl  extends BasicServiceImpl<Pet> implements IPetService {

    @Autowired
    private PetMapper petMapper;
    @Autowired
    private PetDetailMapper petDetailMapper;

    /**
     * 宠物上架
     * @param ids
     */
    @Override
    public void onsale(List<Long> ids) {
        // 1.校验ids不为空
        if (ids.isEmpty()){
            throw new MyException("请选中要上架的商品");
        }
        // 2.批量查询数据：查询出下架状态的宠物数据
        List<Pet> pets = petMapper.batchFindByStateAndId(ids, Pet.OFFSALE_IN_PET);
        // 3.修改宠物数据为上架
        pets.forEach(pet -> {
            // 3.1修改状态为上架
            pet.setState(Pet.ONSALE_IN_PET);
            // 3.2添加上架时间
            pet.setOnsaletime(new Date());
            // 3.3同步数据库
            petMapper.update(pet);
        });
    }

    /**
     * 宠物下架
     * @param ids
     */
    @Override
    public void offsale(List<Long> ids) {
        // 1.校验ids不为空
        if (ids.isEmpty()){
            throw new MyException("请选中要下架的商品");
        }
        // 2.批量查询数据：查询出上架状态的宠物数据
        List<Pet> pets = petMapper.batchFindByStateAndId(ids, Pet.ONSALE_IN_PET);
        // 3.修改宠物数据为下架
        pets.forEach(pet -> {
            // 3.1修改状态为下架
            pet.setState(Pet.OFFSALE_IN_PET);
            // 3.2添加下架时间
            pet.setOffsaletime(new Date());
            // 3.3同步到数据库
            petMapper.update(pet);
        });
    }

    /**
     * 根据id查询上架的宠物信息
     * @param id
     * @param onsaleInPet
     * @return
     */
    @Override
    public Pet findByIdAndState(Long id, int state) {
        return petMapper.findByIdAndState(id, state);
    }
}
